package n7_wait_notify;

import lombok.extern.slf4j.Slf4j;

/*
---------------------------------------------------------
|
|   1. 先获得 对象的锁，称为 Owner主人了 才有资格 wait()
|   2. 才能进入lock关联的 Monitor的 [-WaitSet-]
|
|========================================================
 */
@Slf4j(topic = "c.T1")
public class T1_wait_前提_获得对象锁 {

    static final Object lock = new Object();

    public static void main(String[] args) {

//        test1();
        test2();

    }

    // java.lang.IllegalMonitorStateException
    public static void test1(){
        try {
            lock.wait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    /*
    1. 先获得 对象的锁，成为 Owner主人了 才有资格 wait()
    2. 才能进入lock关联的 Monitor的 [-WaitSet-]
     */
    public static void test2(){
        synchronized (lock){
            try {
                lock.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

}
